// 引入 Vue 和 Router 
import Vue from 'vue'
import Router from 'vue-router'

// 引入组件
import Login from './components/Login.vue'
import Home from './components/Home.vue'
import Welcome from './components/Welcome.vue'
import Users from './components/user/Users.vue'
import Rights from './components/power/Rights.vue'
import Roles from './components/power/Roles.vue'
import Cate from './components/goods/Cate.vue'
// 注册路由组件
Vue.use(Router)

const router = new Router({
    routes: [
        // 重定向根目录
        { path: '/', redirect: 'login' },
        // Login 页面路由配置
        { path: '/login', component: Login },
        // Home 页面路由配置
        {
            path: '/home',
            component: Home,
            // 重定向 /home 到 /welcome
            redirect: '/welcome',
            // Home 下的子路由配置
            children: [
                {
                    // Welcome 路由配置
                    path: '/welcome',
                    component: Welcome
                },
                {
                    // Users 路由配置
                    path: '/users',
                    component: Users
                },
                {
                    // Rights 路由配置
                    path: '/rights',
                    component: Rights
                },
                {
                    // Roles 路由配置
                    path: '/categories',
                    component: Cate
                },

                {
                    // Cate 路由配置
                    path: '/roles',
                    component: Roles
                }
            ]
        }

    ]
})

// 挂载路由导航守卫（权限管控），没有 token 时不允许访问 login 外的页面
router.beforeEach((to, from, next) => {
    //  to 到哪里去
    //  from 从哪里来
    //  next 是一个函数，表示放行
    //  next() 直接放行；
    //  next('./login') 强制跳转    
    if (to.path === '/login') return next();
    // 获取 token
    const tokenStr = window.sessionStorage.getItem('token');
    if (!tokenStr) return next('./login')
    next()
})

export default router